package com.bookbuf.api.apis;

import com.ipudong.core.network.annotation.RestService;
import com.ipudong.core.network.annotation.method.GET;
import com.ipudong.core.network.annotation.param.Param;
import com.ipudong.core.network.response.impl.HealthbokResponse;

/**
 * author: robert.
 * date :  16/11/22.
 */

@RestService
public interface HeWeatherAPI {

    /**
     * 7-10天预报,最长10天天气预报数据（大客户可达14天），天气预报已经包含日出日落，月升月落等常规数据
     *
     * @param city 城市名称 city可通过城市中英文名称、ID和IP地址进行，例如city=北京，city=beijing，city=CN101010100，city= 60.194.130.1
     * @param key  用户认证key
     * @return forecast
     */
    @GET("/forecast")
    HealthbokResponse forecast(@Param("city") String city, @Param("key") String key);

    /**
     * 实况天气
     *
     * @param city 城市名称 city可通过城市中英文名称、ID和IP地址进行，例如city=北京，city=beijing，city=CN101010100，city= 60.194.130.1
     * @param key  用户认证key
     * @return now
     */
    @GET("/now")
    HealthbokResponse now(@Param("city") String city, @Param("key") String key);

    /**
     * 每小时预报（逐小时预报），最长10天
     *
     * @param city 城市名称 city可通过城市中英文名称、ID和IP地址进行，例如city=北京，city=beijing，city=CN101010100，city= 60.194.130.1
     * @param key  用户认证key
     * @return hourly
     */
    @GET("/hourly")
    HealthbokResponse hourly(@Param("city") String city, @Param("key") String key);

    /**
     * 目前提供7大生活指数，每三小时更新
     *
     * @param city 城市名称 city可通过城市中英文名称、ID和IP地址进行，例如city=北京，city=beijing，city=CN101010100，city= 60.194.130.1
     * @param key  用户认证key
     * @return suggestion
     */
    @GET("/suggestion")
    HealthbokResponse suggestion(@Param("city") String city, @Param("key") String key);

    /**
     * 为全国2560个城市灾害预警信息，包括台风、暴雨、暴雪、寒潮、大风、沙尘暴、高温、干旱、雷电、冰雹、霜冻、霾、道路结冰、寒冷、灰霾、雷电大风、森林火险、降温、道路冰雪、干热风、低温、冰冻等灾害类型。每15分钟更新一次，建议用户每30-60分钟获取一下信息。
     *
     * @param city 城市名称 city可通过城市中英文名称、ID和IP地址进行，例如city=北京，city=beijing，city=CN101010100，city= 60.194.130.1
     * @param key  用户认证key
     * @return alarm
     */
    @GET("/alarm")
    HealthbokResponse alarm(@Param("city") String city, @Param("key") String key);

    /**
     * 包括7-10天预报、实况天气、每小时天气、灾害预警、生活指数、空气质量，一次获取足量数据
     *
     * @param city 城市名称 city可通过城市中英文名称、ID和IP地址进行，例如city=北京，city=beijing，city=CN101010100，city= 60.194.130.1
     * @param key  用户认证key
     * @return weather
     */
    @GET("/weather")
    HealthbokResponse weather(@Param("city") String city, @Param("key") String key);


    /**
     * 全国4A和5A级景点共2000＋的7天天气预报
     *
     * @param city 城市名称 city可通过城市中英文名称、ID和IP地址进行，例如city=北京，city=beijing，city=CN101010100，city= 60.194.130.1
     * @param key  用户认证key
     * @return scenic
     */
    @GET("/scenic")
    HealthbokResponse scenic(@Param("city") String city, @Param("key") String key);

    /**
     * 支持2010年1月1日至今的全国城市历史天气数据
     *
     * @param city 城市名称 city可通过城市中英文名称、ID和IP地址进行，例如city=北京，city=beijing，city=CN101010100，city= 60.194.130.1
     * @param date 获取制定日期的历史数据，格式为yyyy-mm-dd 2013-12-30 2010-01-01
     * @param key  用户认证key
     * @return historical
     */
    @GET("/historical")
    HealthbokResponse historical(@Param("city") String city, @Param("date") String date, @Param("key") String key);

    /**
     * 通过此接口获取城市信息，例如通过名称获取城市ID，建议使用城市ID获取天气数据，避免重名城市导致的混淆
     *
     * @param city 城市名称 city可通过城市中英文名称、ID和IP地址进行，例如city=北京，city=beijing，city=CN101010100，city= 60.194.130.1
     * @param key  用户认证key
     * @return search
     */
    @GET("/search")
    HealthbokResponse search(@Param("city") String city, @Param("key") String key);


}
